package com.du.config;

import com.du.bean.Yellow;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

import javax.sql.DataSource;

/**
 * @author djg
 * @date 2020/11/25
 * Profile:
 *      Spring 为我们提供的可以根据当前环境，动态的激活和切换一系列组件的功能
 *
 * 开发环境、测试环境、生产环境
 * 数据源：（/A） （/B） （/C）
 * @Profile :指定组件在哪个环境情况下才能被注册到容器中，不指定，任何环境下都能注册这个组件
 *
 * 1、加了环境标识的bean，只有这个环境被激活的时候才能注册到容器中，默认是default环境
 * 2、写在配置类上，只有是指定的环境的时候，整个配置类里面的所有配置才能开始生效
 * 3、没有标注环境标识的bean，在任何环境下都是加载的
 *
 */

@Configuration
@Profile("test")
public class MainConfigOfProfile {

    @Bean
//    @Profile("test")
    public Yellow yellow() {
        return new Yellow();
    }

    @Profile("test")
    @Bean("dataSourceTest")
    public DataSource dataSourceTest() {
        System.out.println("dataSourceTest...active");
        return new ComboPooledDataSource();
    }

    @Profile("dev")
    @Bean("dataSourceDev")
    public DataSource dataSourceDev() {
        System.out.println("dataSourceDev...active");
        return new ComboPooledDataSource();
    }

    @Profile("prod")
    @Bean("dataSourceProd")
    public DataSource dataSourceProd() {
        System.out.println("dataSourceProd...active");
        return new ComboPooledDataSource();
    }
}
